package com.hui.redis.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hui.redis.cache.MyRedisCache;
import com.hui.redis.entity.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * @BelongsProject: redis
 * @BelongsPackage: com.example.demo.mapper
 * @Author: HUI
 * @CreateTime: 2022-03-18 11:53
 * @Description:
 */

@Mapper
//开启缓存，默认所有查询都缓存，所有修改删除新增清空缓存
@CacheNamespace(implementation = MyRedisCache.class)
public interface UserMapper extends BaseMapper<User> {

    /**
     * 指定禁用缓存
     * @param id
     * @return
     */
    @Options(useCache = false)
    @Select("select * from `user` where id = #{id}")
    User findById(@Param("id") Integer id);

    /**
     * 自动情况缓存
     * @param user
     * @return
     */
    @Insert("insert into `user` values (#{id}, #{name}, #{age})")
    int save(User user);

    /**
     * 默认缓存
     * @return
     */
    @Select("select * from user")
    List<User> findAll();

    /**
     * 自动清空缓存
     * @param id
     */
    @Delete("delete from user where id =#{id}")
    void delete(Integer id);



    /**
     * 某些复杂更新写在xml中的，使用Flush使下次查询刷新缓存
     * @return
     */
    @Flush
    int batchUpdate(@Param("id")Integer id);
}
